var informacionTicket = [];

// Inicializamos la información del ticket
informacionTicket.nombreComercio = "";
informacionTicket.cif = "";
informacionTicket.direccion = "";
informacionTicket.ciudad = "";
informacionTicket.comentarios = "";

$(document).ready(function(){

	// Recogemos la información que tenga el comercio para el formato del ticket y lo mostramos
	recogerInformacionTicketComercio();
	// Cargamos la información del ticket por si el usuario los quiere editar
	cargarInformacionTicketEnVentanaEditar();

	// Mostramos el formato del ticket que tengamos guardados hasta entonces
	$("#ticket-actual").show();

	// Oyente del botón editar que mostrará una ventana para editar
	$('#boton_editar_ticket').click(onClickBoton_editar_ticket);
	$('#icono_cancelar_editar_ticket').click(onClickBoton_cancelar_editar_ticket);

	// Limitamos los campos para que no puedan escribir más de una línea
	$("#input-nombre-comercio").limiter(48, { label: '#contador-caracteres-nombre-comercio' });
	$("#input-cif").limiter(9, { label: '#contador-caracteres-cif' });
	$("#input-direccion").limiter(64, { label: '#contador-caracteres-direccion' });
	$("#input-ciudad").limiter(64, { label: '#contador-caracteres-ciudad' });
	$("#textarea-comentarios").limiter(48, { label: '#contador-caracteres-comentarios' });

	window.PixelAdmin.start(init);

	$('#wizard-forms .wizard-prev-step-btn').on('click', function () {
		$('#wizard-forms').pixelWizard('prevStep');
		return false;
	});

	// PASO 1: CABECERA Y PIE DE PÁGINA
	$("#wizard-cabecera-pie").validate({
		ignore: '.ignore',
		focusInvalid: true,
		rules: {
			'nombre-comercio': {
				required: true,
				minlength: 1
			},
			'cif': {
				required: true,
				minlength: 9,
				maxlength: 9
			},
			'direccion': {
				required: true,
				minlength: 2
			},
			'ciudad': {
				required: true,
				minlength: 2
			},
			'comentarios': {
			},
		},
		messages: {
			'nombre-comercio': {
				required: 'Debe introducir la razón o denominación social completa'
			},
			'cif' : {
				required: 'Debe introducir el CIF/NIF',
				minlength: 'Debe introducir un CIF/NIF válido, recuerde que está formado de una letra y 8 dígitos',
				maxlength: 'Debe introducir un CIF/NIF válido, recuerde que está formado de una letra y 8 dígitos'
			},
			'direccion' : {
				required: 'Debe introducir la dirección del comercio',
				minlength: 'Debe introducir un dirección válida'
			},
			'ciudad' : {
				required: 'Debe introducir la ciudad y el código postal donde se encuentra el comercio',
				minlength: 'Debe introducir una ciudad y código postal válido'
			},
		}
	});
	
	$('#wizard-cabecera-pie').on('submit', function () {
		if ($(this).valid()) {
			$("#vista-previa").show();
			$('#wizard-forms').pixelWizard('nextStep');

			// Preparamos la vista previa del ticket
			prepararVistaPreviaTicket($("input[name='nombre-comercio']").val(), $("input[name='cif']").val(), $("input[name='direccion']").val(), $("input[name='ciudad']").val(), $('#textarea-comentarios').val())
		}
		return false;
	});

	// PASO 2: VISTA PREVIA
	$('#wizard-vista-previa').on('submit', function () {
		// Realizamos la petición ajax para que se almacene la información en el servidor
		$.ajax({
	        url: '../php/ticket/operacionesTicket.php',
	        type: 'POST',
	        dataType: 'json',
	        data: crearPeticionJsonActualizarTicket(),
	        success: function (data) {
	        	// Vemos si se ha almacenado la información de forma correcta en el servidor
	        	if(data['Resultado'] == "OK"){
					// Preparamos el ticket con los cambios que acaba de introducir el usuario
					prepararVistaTicketAlmacenado($("input[name='nombre-comercio']").val(), $("input[name='cif']").val(), $("input[name='direccion']").val(), $("input[name='ciudad']").val(), $('#textarea-comentarios').val());
					// Notificamos al usuario que se ha actualizado el formato del ticket con éxito
					$.growl.notice({ title:"Ticket actualizado", message: "El formato del ticket ha sido actualizado con éxito." });
					// Actualizamos la información del ticket
					informacionTicket.nombreComercio = $("input[name='nombre-comercio']").val();
					informacionTicket.cif = $("input[name='cif']").val();
					informacionTicket.direccion = $("input[name='direccion']").val();
					informacionTicket.ciudad = $("input[name='ciudad']").val();
					informacionTicket.comentarios = $('#textarea-comentarios').val()
	        	}else{
	        		// Notificamos al usuario que no se ha actualizar el formato del ticket con éxito
					$.growl.error({ title:"Error", message: "El formato del ticket no se ha podido actualizar. Inténtelo más tarde." });
	        	}
	        	$("#formulario_editar_ticket").hide();
				$('#wizard-forms').pixelWizard('setCurrentStep', 1);
				// Mostramos el ticket resultado actualizado
				$("#ticket-actual").show();
	        },
	        error: function (data) {
	            console.log(data)
	        }
    	});
		
		return false;
	});
});

/************************************** OPERACIONES SERVIDOR *************************************/

// Método encargado de realizar el json correspondiente para registrar el formato del ticket en el servidor
function crearPeticionJsonActualizarTicket(){
    informacionJson = {};
    datosPeticionTicket = {};
    datosPeticionTicket.accion = 'actualizarTicket';
    datosPeticionTicket.tipoFormulario = 'ticket';
    datosPeticionTicket.tokenCSRF = $('#ticket_token_CSRF').val();

    // Datos de la cabecera y pie del ticket
    datosPeticionTicket.nombre_comercio = $("input[name='nombre-comercio']").val();
    datosPeticionTicket.cif = $("input[name='cif']").val();
    datosPeticionTicket.direccion = $("input[name='direccion']").val();
    datosPeticionTicket.ciudad = $("input[name='ciudad']").val();
    datosPeticionTicket.comentarios = $('#textarea-comentarios').val()

    informacionJson.datosPostTicket = datosPeticionTicket;
    informacionJson.peticionAjax = 'SI';

    return informacionJson;
}

function recogerInformacionTicketComercio(){
	// Realizamos la petición ajax para recoger la información del ticket del comercio en el servidor
	$.ajax({
        url: '../php/ticket/operacionesTicket.php',
        type: 'POST',
        dataType: 'json',
        data: crearPeticionJsonRecogerInformacionTicket(),
        success: function (data) {
        	// Vemos si se ha almacenado la información de forma correcta en el servidor
        	if(data['Resultado'] == "OK"){
        		// Inicializamos al por defecto
        		var nombreComercio = '';
        		var cif = '';
        		var direccion= '';
        		var ciudad= '';
        		var comentarios = '';
     
        		// Vemos si existía información ya en el servidor
        		if(data['ExisteInfo'] == "Si"){
        			nombreComercio = data['nombreComercio'];
        			cif = data['cif'];
        			direccion = data['direccion'];
        			ciudad = data['ciudad'];
        			comentarios = data['comentarios'];
        			// Preparamos la vista previa del ticket con los datos que nos devuelve el servidor
					prepararVistaTicketAlmacenado(nombreComercio, cif, direccion, ciudad, comentarios);
        		}else{
        			// Preparamos la vista previa del ticket con los datos que nos devuelve el servidor
					prepararVistaTicketAlmacenado('Razón social', 'CIF/NIF', 'Calle, número', 'Ciudad, código postal', 'Comentarios p.e. . «Gracias por su visita», «Que tenga un buen día», «próxima apertura», «inicio de las rebajas»');
        		}
        		
				// Almacenamos la información del ticket
				informacionTicket.nombreComercio = nombreComercio;
				informacionTicket.cif = cif;
				informacionTicket.direccion = direccion;
				informacionTicket.ciudad = ciudad;
				informacionTicket.comentarios = comentarios;
        	}else{
        		// Notificamos al usuario que no se ha actualizar el formato del ticket con éxito
				$.growl.error({ title:"Error", message: "Ha ocurrido un error al consultar el formato del ticket almacenado. Inténtelo de nuevo más tarde." });
        		// Preparamos la vista previa del ticket con los datos que nos devuelve el servidor
				prepararVistaTicketAlmacenado('Razón social', 'CIF/NIF', 'Calle, número', 'Ciudad, código postal', 'Comentarios p.e. . «Gracias por su visita», «Que tenga un buen día», «próxima apertura», «inicio de las rebajas»');
        	}
        },
        error: function (data) {
            console.log(data)
        }
	});
}

// Método encargado de realizar el json correspondiente para recoger el formato del ticket del servidor
function crearPeticionJsonRecogerInformacionTicket(){
    informacionJson = {};
    datosPeticionTicket = {};
    datosPeticionTicket.accion = 'recogerInformacionTicket';
    datosPeticionTicket.tipoFormulario = 'ticket';
    datosPeticionTicket.tokenCSRF = $('#ticket_token_CSRF').val();

    informacionJson.datosPostTicket = datosPeticionTicket;
    informacionJson.peticionAjax = 'SI';

    return informacionJson;
}

/****************************************** ON CLICK BOTONES *************************************/

function onClickBoton_editar_ticket() {
	event.preventDefault();
	cargarInformacionTicketEnVentanaEditar();
	$("#ticket-actual").hide();
	$("#formulario_editar_ticket").show();
	$('#wizard-forms').pixelWizard('setCurrentStep', 1);
}

function onClickBoton_cancelar_editar_ticket() {
	event.preventDefault();
	$("#ticket-actual").show();
	$("#formulario_editar_ticket").hide();
	$('#wizard-forms').pixelWizard('setCurrentStep', 1);
}

/***************************************** FUNCIONES AUXILIARES **********************************/

function prepararVistaPreviaTicket(nombreComercio, cif, direccion, ciudad, comentarios){
	// Nombre o razón social del comercio
	nombre_comercio = $('<h1 class="h1-nombre-comercio"><b>' + nombreComercio + '</b></h1>');
	$('#div-nombre-comercio').empty();
	$('#div-nombre-comercio').append(nombre_comercio);
	// CIF/NIF
	cif = $('<h3 class="h3-small">CIF/NIF: ' + cif + '</h3>');
	$('#div-cif').empty();
	$('#div-cif').append(cif);
	// Dirección
	direccion = $('<h3 class="h3-small">' + direccion + '</h3>');
	$('#div-direccion').empty();
	$('#div-direccion').append(direccion);
	// Ciudad, CP
	ciudad = $('<h3 class="h3-small">' + ciudad + '</h3>');
	$('#div-ciudad').empty();
	$('#div-ciudad').append(ciudad);
	// Fecha y hora
	var fecha = new Date();
	if(fecha.getMonth()+1 < 10){
		mes = "0" + (fecha.getMonth()+1)
	}else{
		mes = (fecha.getMonth()+1)
	}
	if(fecha.getDate() < 10){
		dia = "0" + fecha.getDate();
	}else{
		dia = fecha.getDate();
	}
	if(fecha.getHours() < 10){
		hora = "0" + fecha.getHours();
	}else{
		hora = fecha.getHours();
	}
	if(fecha.getMinutes() < 10){
		minuto = "0" + fecha.getMinutes();
	}else{
		minuto = fecha.getMinutes();
	}
	fecha_hora = '<h3 class="h3-small">' + dia + "/" + mes + "/" + fecha.getFullYear() + '   ' + hora + ":" + minuto + '   Id:0000025-1</h3>';
	$('#div-fecha-hora').empty();
	$('#div-fecha-hora').append(fecha_hora);
	// Comentarios
	comentarios = $('<h3 class="h3-small">' + comentarios + '</h3>');
	$('#div-comentarios').empty();
	$('#div-comentarios').append(comentarios);
}

function prepararVistaTicketAlmacenado(nombreComercio, cif, direccion, ciudad, comentarios){
	// Nombre o razón social del comercio
	nombre_comercio = $('<h1 class="h1-nombre-comercio"><b>' + nombreComercio + '</b></h1>');
	$('#div-nombre-comercio-ticket-almacenado').empty();
	$('#div-nombre-comercio-ticket-almacenado').append(nombre_comercio);
	// CIF/NIF
	cif = $('<h3 class="h3-small">CIF/NIF: ' + cif + '</h3>');
	$('#div-cif-ticket-almacenado').empty();
	$('#div-cif-ticket-almacenado').append(cif);
	// Dirección
	direccion = $('<h3 class="h3-small">' + direccion + '</h3>');
	$('#div-direccion-ticket-almacenado').empty();
	$('#div-direccion-ticket-almacenado').append(direccion);
	// Ciudad, CP
	ciudad = $('<h3 class="h3-small">' + ciudad + '</h3>');
	$('#div-ciudad-ticket-almacenado').empty();
	$('#div-ciudad-ticket-almacenado').append(ciudad);
	// Fecha y hora
	var fecha = new Date();
	if(fecha.getMonth()+1 < 10){
		mes = "0" + (fecha.getMonth()+1)
	}else{
		mes = (fecha.getMonth()+1)
	}
	if(fecha.getDate() < 10){
		dia = "0" + fecha.getDate();
	}else{
		dia = fecha.getDate();
	}
	if(fecha.getHours() < 10){
		hora = "0" + fecha.getHours();
	}else{
		hora = fecha.getHours();
	}
	if(fecha.getMinutes() < 10){
		minuto = "0" + fecha.getMinutes();
	}else{
		minuto = fecha.getMinutes();
	}
	fecha_hora = '<h3 class="h3-small">' + dia + "/" + mes + "/" + fecha.getFullYear() + '   ' + hora + ":" + minuto + '   Id:0000025-1</h3>';
	$('#div-fecha-hora-ticket-almacenado').empty();
	$('#div-fecha-hora-ticket-almacenado').append(fecha_hora);
	// Comentarios
	comentarios = $('<h3 class="h3-small">' + comentarios + '</h3>');
	$('#div-comentarios-ticket-almacenado').empty();
	$('#div-comentarios-ticket-almacenado').append(comentarios);
}

function cargarInformacionTicketEnVentanaEditar(){
	$("input[name='nombre-comercio']").val(informacionTicket.nombreComercio);
    $("input[name='cif']").val(informacionTicket.cif);
    $("input[name='direccion']").val(informacionTicket.direccion);
    $("input[name='ciudad']").val(informacionTicket.ciudad);
    $('#textarea-comentarios').val(informacionTicket.comentarios)
}




